Source code for src.cmd.convert
import sys
from os.path import normpath, join
from datetime import datetime
import cardsharp as cs
from util import *
from ..util import *
from ..configuration import db_info, config
[docs]def convert(cmd):
args = cmd.args
_log = normpath(join(config.log_dir, 'set_%i' % config.current_set, 'convert'))
opt = {'in_dir': check_file(args.in_dir, as_dir = True),
'out_dir': check_file(args.out_dir, as_dir = True),
'meta_dir': check_file(args.metadata_dir, as_dir = True),
'in_format': check_format(args.in_format),
'out_format': check_format(args.out_format),
'in_delimiter': args.in_delimiter,
'out_delimiter': args.out_delimiter,
'max_string_width': args.max_width,
'verbose': args.verbose,
'original': args.original,
'db_info': db_info['stand'],
'log_dir': create_log_dir(_log, replace=True)
}
cs.config.debug = True if args.verbose else False
if args.out_format == args.in_format:
print "in_format: %s and out_format: %s can not be the same." % (args.in_format,
args.out_format)
sys.exit(1)
# if args.out_format in ['text', 'csv', 'del'] and args.original == True:
# print "Can not save original data to text or csv to prevent possible invalid loading."
# sys.exit(1)
if args.in_format == 'excel':
print "Can not convert segment data from excel due to integer loading errors."
sys.exit(1)
print "Converting data..."
_segments = [segment_run_map[seg] for seg in cmd.args.segments.split('|')]
for segment in _segments:
__opt = opt.copy()
if segment == 'subject':
continue
__opt['segment'] = segment
print 'Converting %s starting at %s \n' % (segment, datetime.now().isoformat(' '))
cmd.task_queue.put(__opt)
cmd.start() #start the compare worker threads
cmd.task_queue.join() #wait for workers to finish
cmd.flush() #flush the logs
print "done."